package com.hengxinguotong.zhihuichengjian.widget.view;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;

/**
 * @CopyRight 恒信国通信息科技
 * @Author wulei
 * @Date 2018/7/17
 *
 * 通用popupwindow类封装
 */

public class CommonPopupWindow {
    protected Context context;
    protected View contentView;
    protected PopupWindow mInstance;

    //构造方法，第一个参数传入上下文，第二个参数传入布局文件，第三个参数传入弹窗宽度，第四个参数传入弹窗高度
    public CommonPopupWindow(Context context, int layoutRes, int w, int h) {
        this.context = context;
        //用于PopupWindow的View
        contentView = LayoutInflater.from(context).inflate(layoutRes, null, false);
        // 创建PopupWindow对象，其中：
        // 第一个参数是用于PopupWindow中的View，第二个参数是PopupWindow的宽度，
        // 第三个参数是PopupWindow的高度，第四个参数指定PopupWindow能否获得焦点
        mInstance = new PopupWindow(contentView, w, h, true);
        initWindow();
    }

    //获取布局view
    public View getContentView() { return contentView; }

    //获取弹窗本身
    public PopupWindow getPopupWindow() { return mInstance; }

    //初始化
    protected void initWindow() {
        // 设置PopupWindow的背景
        mInstance.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        // 设置PopupWindow是否能响应外部点击事件
        mInstance.setOutsideTouchable(true);
        // 设置PopupWindow是否能响应点击事件
        mInstance.setTouchable(true);
    }

    // 显示PopupWindow，其中：
    // 第一个参数是PopupWindow的锚点，第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
    public void showAsDropDown(View anchor, int xoff, int yoff) {
        mInstance.showAsDropDown(anchor, xoff, yoff);
    }

    // 或者也可以调用此方法显示PopupWindow，其中：
    // 第一个参数是PopupWindow的父View，第二个参数是PopupWindow相对父View的位置，
    // 第三和第四个参数分别是PopupWindow相对父View的x、y偏移
    public void showAtLocation(View parent, int gravity, int x, int y) {
        mInstance.showAtLocation(parent, gravity, x, y);
    }
}
